primitive type categories